<?php 
/**
*
 属性控制器 2016-11-8-22:41 @auth：YWH
*/
namespace Admin\Controller;	

/**
*
查询数据 加载模板 显示属性列表
*/


class AttributeController extends AdminController
{
	
	public function index()
	{
/**
初始化变量 实例化模型
 */
		
		$Goodstype 	= D('Goodstype');

		$typattrM	= D('TypAttr');

		$attr 	= D('AttrVal');

		$type 		= array();

		$attrArr 	= array();

		$parent		=array();

		$data = $Goodstype->relation(true)->select();

		$this->assign('data',$data);

		
/**
 查询分类，属性名，属性值，合成新数组
 */
		foreach ($data as $key => $value)
		{
			
			foreach ($value['attibut'] as $k => $v)
			 {
				
				$attrvalArr 	=	$attr->where('attr_id='.$v['id'])->select();

			

				if(!$attrvalArr)
				{
					$pro_val = null;
				}else{
					$pro_val = json_decode($attrvalArr[0]['attr_val']);
				}



				$attrArr[] = array_merge($v,['type_name'=>$value['type_name'],'type_pid'=>$value['pid'],'type_id'=>$value['id']],['attr_val'=>$pro_val]);
			}
		}



		// echo'<pre>';
		// dump($attrArr);
		// dump($data);
		// dump($value);
		
		// print_r($data);
		// print_r($v);
		// print_r($parent);
		// echo'<pre/>';

		$this->assign('attrArr',$attrArr);

		$this->display();
	}


/**
*
	//查询分类，填充option 加载add模板
*/

	public function add()
	{

		 //实例化数据库对象
        $goodsclass = D('Goodstype');
        //查询所有顶级分类
        $one = $goodsclass->where('pid=0')->select();
        //遍历查询所有子类
        foreach($one as $k=>$v){
            $childCid = $goodsclass->where('pid='.$v['id'])->getField('id',true);
            $childName = $goodsclass->where('pid='.$v['id'])->getField('type_name',true);
            //把所有类合并为一个二维数组
            $classes[$v['type_name']] = array_combine($childCid, $childName);
        }

        //分配变量
        $this->assign('classes',$classes);
        $this->display();
	}

/**
*
接受add数据 并进行update操作
*/


	public function insert()
	{

		// var_dump($_POST);

		

		if (I('post.type_id')==''||I('post.attr_name')==''||empty($_POST['attr_val'])) {
			
			$this->error('非法操作');//判断是否合法进入
		}
	

		$attr 			= D('TypAttr');//实例化model

		$AttrValModel 	= D('AttrVal');


		$data 			= ['type_id' =>I('post.type_id'),'attr_name'=>I('attr_name')];



		if ($attr->create($data))
		{
				// NSLog($attr->create($data));

				if ($attr->add()>0 )
				{

					$attr_id = $attr->getLastInsID();

					$json 			= json_encode($_POST['attr_val']);

					$attr_val =['attr_id'=>$attr_id,'attr_val' => $json];

					$AttrValModel->add($attr_val);


					
					 $this->success('更新成功', '/Admin/Attribute/add');

				}else{

	            	$this->error('更新失败','/Admin/Attribute/add');

	           }

		}else{

             		$this->error($goods->getError(),'',2);

             exit();
        }

	}




/**
  加载编辑模板并填入默认变量
 */

	public function edit()
	{

		if (empty($_GET['id'])) {
			
			$this->error('非法操作');

		}


		$Goodstype 			= D('Goodstype');
        //查询
        $goodsclasses		= $Goodstype->select();

        $typattrM 			= D('TypAttr');

        $attr_typ			= $typattrM->find($_GET['id']);

        $AttrValModel		= D('AttrVal');

        $attr_val_data		= $AttrValModel->where('attr_id='.I('get.id'))->select();

    

        if (!empty($attr_val_data[0]['attr_val'])) 
        {
        	 $attr_val_arr	= json_decode($attr_val_data[0]['attr_val']);

        	$this->assign('attr_val_arr',$attr_val_arr);


        }else{
        	
        	$this->error('查无数据，稍后再试','/Admin/Attribute/index','2');
        }

       	
       
        $this->assign('goodsclasses',$goodsclasses);

        $this->assign('attr_typ',$attr_typ);



		$this->display();
	}
	



	public function modify(){

		// var_dump($_GET);
	

		// exit;
		// var_dump($_POST);
		if (empty($_GET['id']) || ($_POST['type_id'])=='')
		{
			
			$this->error('请检查属性信息是否完整',U('Admin/Attribute/index'),2);

			exit();
		}


		$typ_attr_data = ['id'=>I('get.id'),'type_id'=>$_POST['type_id'],'attr_name'=>I('post.new_attr_name')];

		// $val_attr_data = ['attr_id'=>I('get.id'),'attr_val'=>I('post.attr_name')];



		$attV  		= D('AttrVal');

		$TypAttr 	= D('TypAttr');

		

/**
 属性名更新
 */

		if (!empty($_POST['new_attr_name'])) 
		{
			
			 if ($TypAttr->create()) 
	        {
	           if ($TypAttr->save($typ_attr_data)) 
	           {
	               
	            $this->success('更新成功', U('Admin/Attribute/index'));
	            
	           }else{

	            $this->error('更新失败',U('Admin/Attribute/index'));

	           }
	        }else{

	             $this->error($goods->getError(),U('Admin/Attribute/index'),2);

	             exit();
	        }
			
		}else{

			$this->error('属性名不能为空',2);

		}
	}



	public function cancel()
	{

		// var_dump($_GET);

		// var_dump($_POST);

		// exit();

		if (empty($_GET['id']))
		{
			
			$this->error('非法操作',U('Admin/Attribute/index'),2);
		}

		$attV  			= D('AttrVal');

		$val_attr_data 	= $attV->find($_GET['id']);

		if (empty($val_attr_data))
		{
			
			$this->error('数据出错，稍后再试',U('Admin/Attribute/index'),2);
		}

		// var_dump($val_attr_data);


	}

/**
删除所有属性值
 */
		public function  del(){

		if (empty($_GET['id'])) {
			
			$this->error('非法操作',U('Admin/Attribute/index'),2);
		}

		$attV  			= D('AttrVal');

		$attr 			= D('TypAttr');

		$attr->startTrans();//在第一个模型里启用就可以了，或者第二个也行
		
		$result 		= $attr->delete($_GET['id']);
		
		$result2		= $attV->where('attr_id='.$_GET['id'])->delete();
		
		if($result && $result2){
		
		$attr->commit();//成功则提交
		$this->success('删除成功', U('Admin/Attribute/index'));
		
		}else{
		
		$attr->rollback();//不成功，则回滚
		$this->error('删除失败',U('Admin/Attribute/index'));
	}
}



		public function newVal()
		{

			if (empty($_GET['id'])) 
			{
				
				$this->error('非法操作',U('Admin/Attribute/index'),2);
			}

			$TypAttr 	= D('TypAttr');

			$typ  		= $TypAttr->where('id='.$_GET['id'])->find();

			$attr_name  = $typ['attr_name'];

			// var_dump($typ);

			$this->assign('attr_name',$attr_name);

			$this->display();

		}




		public function newValue()
		{

			// NSLog($_POST);
			// NSLog($_GET);

			// var_dump($_POST['id']);

			if (empty($_GET['id']))
			{
				
				$this->error('非法操作',U('Admin/Attribute/index'),2);
			}

			if (empty($_POST['attr_val']))
			{
				
				$this->error('请正确填写您的表单',U('Admin/Attribute/index'),2);
				exit();
			}


			$attV  			= D('AttrVal');

			$attrVal1 		= $attV->where('attr_id='.$_GET['id'])->find();


			$attrVal2		= $_POST['attr_val'];

			$attrValArr 	= json_decode($attrVal1['attr_val']);

			if (empty($attrVal1))
			{
				
				$res 		= $attrVal2;

			}else{
				
				$res		= array_merge($attrValArr,$attrValArr);
			}


			$data 			= ['id'=>$attrVal1['id'],'attr_val'=>json_encode($res)];

		

			if ($attV->create($data)>0)
			{
		

				if ($attV->where('attr_id='.$_GET['id'])->save($data)>0) 
				{

					
					$this->success('更新成功', U('Admin/Attribute/index'),2);

				}else{
					
					 $this->error('更新失败',U('Admin/Attribute/index'),200);
					 exit();
				}
			}else{

				$this->error($attV->getError(),'',2);
			}
			
		}


}
		